package com.cc.wechat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cc.wechat.dto.request.LoginRequest;
import com.cc.wechat.dto.request.RegisterRequest;
import com.cc.wechat.dto.response.JwtAuthResponse;
import com.cc.wechat.dto.response.RegisterResponse;
import com.cc.wechat.dto.response.UserSearchResponse;
import com.cc.wechat.entity.User;

/**
 * 用户服务接口
 */
public interface UserService extends IService<User> {
    /**
     * 用户登录
     *
     * @param loginRequest 登录请求
     * @return JWT认证响应
     */
    JwtAuthResponse login(LoginRequest loginRequest);

    /**
     * 用户注册
     *
     * @param registerRequest 注册请求
     * @return 注册响应
     */
    RegisterResponse register(RegisterRequest registerRequest);

    /**
     * 获取当前登录用户
     *
     * @return 当前用户实体
     */
    User getCurrentUser();

    /**
     * 更新用户最后登录时间
     *
     * @param username 用户名
     */
    void updateLastLoginTime(String username);

    /**
     * 检查用户名是否已存在
     *
     * @param username 用户名
     * @return 是否存在
     */
    boolean existsByUsername(String username);

    /**
     * 检查邮箱是否已被注册
     *
     * @param email 电子邮箱
     * @return 是否已注册
     */
    boolean existsByEmail(String email);

    /**
     * 通过邮箱搜索用户
     * @param email 邮箱
     * @return 用户搜索响应，包含基本信息和好友关系状态
     * @throws IllegalArgumentException 参数不合法时抛出
     */
    UserSearchResponse searchUserByEmail(String email);
} 